/*
 * 
 * LegendShop 多用户商城系统
 * 
 *  版权所有,并保留所有权利。
 * 
 */
package com.legendshop.oa.service;

import java.util.Date;
import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.legendshop.dao.support.PageSupport;
import com.legendshop.oa.dto.*;
import com.legendshop.oa.model.Task;
import com.legendshop.oa.security.UserDetail;

/**
 * The Class TaskService. 服务接口
 */
public interface TaskService {

	/**
	 * 根据Id获取
	 */
	public Task getTask(UserDetail userDetail, Long id);

	/**
	 * 删除
	 */
	public boolean deleteTask(Task task);

	/**
	 * 保存
	 */
	public Task saveTask(Task task, UserDetail ud);

	/**
	 * 更新
	 */
	public void updateTask(Task task);

	public PageSupport<Task> getTask(TaskQueryDto taskQueryDto);

	public boolean assignUpdateTask(Long taskId,TaskAssignDto taskAssignDto, UserDetail ud);

	/**
	 * 开始任务
	 * @param taskId
	 * @param taskStartDto
	 * @param ud
	 * @return
	 */
	public boolean startUpdateTask(Long taskId, TaskStartDto taskStartDto, UserDetail ud);

	/**
	 * 结束任务
	 * @param taskId
	 * @param ud
	 * @return
	 */
	public boolean finishUpdateTask(Long taskId, TaskFinishDto taskFinishDto, UserDetail ud);

	/**
	 * 关闭任务
	 * @param taskId
	 * @param taskCloseDto
	 * @param ud
	 * @return
	 */
	public boolean closeUpdateTask(Long taskId, TaskCloseDto taskCloseDto, UserDetail ud);

	/**
	 * 取消任务
	 * @param taskId
	 * @param ud
	 * @return
	 */
	public boolean cancelUpdateTask(Long taskId,TaskCancelDto taskCancelDto, UserDetail ud);

	/**
	 * 保存工时
	 * @param ud
	 * @return
	 */
	public boolean saveTaskEstimate(Task task, List<TaskEstimateDto> taskEstimateList, UserDetail ud);

	public JSONObject queryList(Long projectId, Date startDate, Date endDate, String userName, String q, Integer pageSize, Integer currPage);

	public boolean saveTaskEstimate(Task task, TaskEstimateDto te, UserDetail ud);

	/**
	 * 查询我的任务
	 * @param startDate
	 * @param endDate
	 * @param userName
	 * @return
	 */
	public List<Select2Dto> queryMyList(Date startDate, Date endDate, String userName);

}
